attribute vec3 a_positionL;
attribute vec3 a_normalL;
attribute vec3 a_bitangentL;
attribute vec3 a_tangentL;
attribute vec2 a_uv;

uniform mat4 u_wvpMatrix;
uniform mat4 u_wMatrix;

varying vec3 v_normalW;
varying vec3 v_bitangentW;
varying vec3 v_tangentW;
varying vec2 v_uv;

void main()
{
    gl_Position = u_wvpMatrix * vec4(a_positionL, 1.0);
    v_normalW = normalize((u_wMatrix * vec4(a_normalL, 0.0)).xyz);
    v_bitangentW = normalize((u_wMatrix * vec4(a_bitangentL, 0.0)).xyz);
    v_tangentW = normalize((u_wMatrix * vec4(a_tangentL, 0.0)).xyz);
    v_uv = a_uv;
}
